package pl.enigmatic.parser.xml;

import org.w3c.dom.Node;


public interface XMLParserExtension {

	/**
	 * Checks whether <code>this</code> extension can parse the given <code>node</code> and if so - returns appropriate data to be used later. If it
	 * cannot parse the <code>node</code> - returns <code>null</code>.
	 * @param node the node to check
	 * @param info parsing info from the process of parsing the parent node
	 * @return the appropriate <code>NodeNameInfo</code>, if <code>this</code> can parse the <code>node</code>, or <code>null</code> otherwise.
	 */
	public NodeNameInfo parseNodeName(Node node, ParsingInfo<?> info);

	public boolean setParsedProperty(Object target, ParsingInfo<?> info, Object value);

	public PropertySetter accessor(String property);
}
